﻿namespace Creator.Core.Entity
{
    /// <summary> 
    /// 将数据库实体转换成ui显示
    /// <code>
    /// 
    ///   //所有数据库实体都要实现这个IdHashCode，这个id 就是从数据库获取的id 为唯一字段
    ///   public override int IdHashCode => id.GetHashCode();
    /// 
    /// </code>
    /// </summary>
    public interface IUIEntity
    {
        /// <summary>
        /// 数据主键的 hashCode
        /// </summary>
        int IdHashCode { get; }
        /// <summary>
        /// 显示名称
        /// </summary>
        string Name { get; }
        /// <summary>
        /// 显示描述
        /// </summary>
        string Description { get; }

        /// <summary>
        /// 实时数据显示,注意get的写法。
        /// 当get中的字段set发生改变时，也要及时set RealTimeInfo
        /// <code>
        ///  //-----重写代码---------
        ///   private string realTimeInfo;
        ///   public override string RealTimeInfo
        ///   {
        ///       get => $"{work_name}_{load_info1}:{load_staus}"; set
        ///       { 
        ///          realTimeInfo = value; 
        ///          RaisePropertyChanged();
        ///       }
        ///   }
        ///  //------get中的属性发生变化时
        ///   public string work_name
        ///   {
        ///      get => _work_name;
        ///      set
        ///      {
        ///          RealTimeInfo = null;********************重点！
        ///          _work_name = value;
        ///          RaisePropertyChanged();
        ///      }
        ///   }
        /// </code>
        /// </summary>
        string RealTimeInfo { get; set; }
        /// <summary>
        /// UI显示的宽度， 默认值45
        /// </summary>
        double Width { get; }

        /// <summary>
        ///  UI显示的高度， 默认值45
        /// </summary>
        double Height { get; }

        /// <summary>
        ///  UI显示的X位置， 默认值0
        /// </summary>
        double PosX { get; }
        /// <summary>
        ///  UI显示的Y位置， 默认值0
        /// </summary>
        double PosY { get; }
    } 
}
